From NYC Planning:
ny_t_2020_filt <- ny_t_2020 %>%
filter(AWATER < ALAND)
ny_t_2010_filt <- ny_t_2010 %>%
filter(AWATER10 < ALAND10)
tract_intersection <- function(gdf1, gdf2, id) {
gdf1 %>%
filter(GEOID == id) %>%
st_intersection(filter(gdf2, GEOID == id))
}
tract_difference <- function(gdf1, gdf2, id) {
gdf1 %>%
filter(GEOID == id) %>%
st_difference(filter(gdf2, GEOID == id))
}
ny_t_int <- map_dfr(unique(ny_t_2020_filt$"GEOID"), ~tract_intersection(ny_t_2020_filt, ny_t_2010_filt, .))
ny_t_int
ny_t_diff_2020 <- map_dfr(unique(ny_t_2020_filt$"GEOID"), ~tract_difference(ny_t_2020_filt, ny_t_2010_filt, .))
ny_t_diff_2020
ny_t_diff_2010 <- map_dfr(unique(ny_t_2010_filt$"GEOID"), ~tract_difference(ny_t_2010_filt, ny_t_2020_filt, .))
ny_t_diff_2010
stopifnot(st_crs(ny_t_2020_filt) == st_crs(ny_t_2020_filt))
leaflet(data = ny_t_diff_comp) %>%
addProviderTiles(providers$CartoDB.Positron) %>%
addPolygons(data = ny_t_2010_filt,
color = "black", stroke = T, weight = 0.2,
fill = T, fillColor = "grey",
group = "Census Tracts 2010") %>%
addPolygons(color = "gray", stroke = T,weight = 0.2,
fill = T, fillColor = ~pal(area_ratio), fillOpacity = 1,
group = "Census Tracts 2020") %>%
addLegend(position = "topright",
pal = pal_rev,
values = ~area_ratio,
title = "Area ratio",
labFormat = labelFormat(transform = function(area_ratio)
sort(area_ratio, decreasing = TRUE))) %>%
addLayersControl(overlayGroups = c("Census Tracts 2010", "Census Tracts 2020"))
## Warning: sf layer has inconsistent datum (+proj=longlat +datum=NAD83 +no_defs).
## Need '+proj=longlat +datum=WGS84'
racedata_sf %>%
ggplot() +
geom_sf(aes(fill = total20), color = NA) +
theme_fc_map() +
scale_fill_gradient(
name = "Population in 2020",
low = "#F4F4F4", high = "#40899A",
# here we use guide_colourbar because it is still a continuous scale
guide = guide_colorbar(
direction = "horizontal",
barheight = unit(2, units = "mm"),
barwidth = unit(50, units = "mm"),
draw.ulim = F,
title.position = "top",
# some shifting around
title.hjust = 0.5,
label.hjust = 0.5
)
) +
theme(legend.position = "bottom",
text = element_text(color = "#22211d"))